home *** CD-ROM | disk | FTP | other *** search
/ Introduction to 3D Game …ogramming with DirectX 12 / Introduction-to-3D-Game-Programming-with-DirectX-12.ISO / Code.Textures / Chapter 12 The Geometry Shader / TreeBillboards / Waves.h < prev   
C/C++ Source or Header  |  2016-03-02  |  2KB  |  63 lines

  1. //***************************************************************************************
  2. // Waves.h by Frank Luna (C) 2011 All Rights Reserved.
  3. //
  4. // Performs the calculations for the wave simulation.  After the simulation has been
  5. // updated, the client must copy the current solution into vertex buffers for rendering.
  6. // This class only does the calculations, it does not do any drawing.
  7. //***************************************************************************************
  8.  
  9. #ifndef WAVES_H
  10. #define WAVES_H
  11.  
  12. #include <vector>
  13. #include <DirectXMath.h>
  14.  
  15. class Waves
  16. {
  17. public:
  18.     Waves(int m, int n, float dx, float dt, float speed, float damping);
  19.     Waves(const Waves& rhs) = delete;
  20.     Waves& operator=(const Waves& rhs) = delete;
  21.     ~Waves();
  22.  
  23.     int RowCount()const;
  24.     int ColumnCount()const;
  25.     int VertexCount()const;
  26.     int TriangleCount()const;
  27.     float Width()const;
  28.     float Depth()const;
  29.  
  30.     // Returns the solution at the ith grid point.
  31.     const DirectX::XMFLOAT3& Position(int i)const { return mCurrSolution[i]; }
  32.  
  33.     // Returns the solution normal at the ith grid point.
  34.     const DirectX::XMFLOAT3& Normal(int i)const { return mNormals[i]; }
  35.  
  36.     // Returns the unit tangent vector at the ith grid point in the local x-axis direction.
  37.     const DirectX::XMFLOAT3& TangentX(int i)const { return mTangentX[i]; }
  38.  
  39.     void Update(float dt);
  40.     void Disturb(int i, int j, float magnitude);
  41.  
  42. private:
  43.     int mNumRows = 0;
  44.     int mNumCols = 0;
  45.  
  46.     int mVertexCount = 0;
  47.     int mTriangleCount = 0;
  48.  
  49.     // Simulation constants we can precompute.
  50.     float mK1 = 0.0f;
  51.     float mK2 = 0.0f;
  52.     float mK3 = 0.0f;
  53.  
  54.     float mTimeStep = 0.0f;
  55.     float mSpatialStep = 0.0f;
  56.  
  57.     std::vector<DirectX::XMFLOAT3> mPrevSolution;
  58.     std::vector<DirectX::XMFLOAT3> mCurrSolution;
  59.     std::vector<DirectX::XMFLOAT3> mNormals;
  60.     std::vector<DirectX::XMFLOAT3> mTangentX;
  61. };
  62.  
  63. #endif // WAVES_H